package io;

import java.io.*;

/**
 * java将流分为两类:
 * 节点流与处理流
 * 节点流:也称为低级流，是真实连接程序与另一端的"管道"，负责实际读写数据的流。
 *       读写一定是建立在节点流的基础上进行的。
 * 处理流:也称为高级流，不能独立存在，必须连接在其他流上。目的是当数据"流经"当前流时对其做
 *       某种加工处理，简化我们的IO操作。
 * 实际开发中我们总是会串联一组高级流到某个低级流上，对该设备读写时以流水线式的加工处理。
 * 这也称为流的连接，是IO处理的精髓所在。
 *
 *
 * 缓冲流
 * 缓冲流是一对常用的高级流，作用是加快读写效率
 * java.io.BufferedOutputStream和BufferedInputStream
 */
public class BOSDemo {
    public static void main(String[] args) throws IOException {
        FileInputStream fis = new FileInputStream("kejing.pptx");
        BufferedInputStream bis = new BufferedInputStream(fis);


        FileOutputStream fos = new FileOutputStream("kejing_cp.pptx");
        BufferedOutputStream bos = new BufferedOutputStream(fos);

        int d;
        long start = System.currentTimeMillis();
        while((d = bis.read())!=-1){
            bos.write(d);
        }
        long end = System.currentTimeMillis();
        System.out.println("复制完毕了!耗时:"+(end-start)+"毫秒");

        //高级流关闭时会自动关闭其连接的流
        bis.close();
        bos.close();
    }
}





